/*
 * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#pragma once

#ifndef _MY_SEG_SCREEN_H
#define _MY_SEG_SCREEN_H

#include "sdkconfig.h"
#include "driver/gpio.h"    

// 先用开发板上 引出的脚位调试，实际板子根据实际接线修改即可
#define SOFT_IIC_DATA_PIN	GPIO_NUM_2
#define SOFT_IIC_SCL_PIN	GPIO_NUM_5

typedef enum{
	IO_DATA_LOW = 0,
	IO_DATA_HIGH,
}gpio_data_t;

// 可以是只显示一个位，也可以是多个位同时闪烁
typedef enum{
	NO_FLICK  	= 0x00,	
	BAI_FLICK 	= 0x01,
	SHI_FLICK 	= 0x02,
	GE_FLICK  	= 0x04,
	ICON1_FLICK = 0x08,
	ICON2_FLICK = 0x10,
	ALL_FLICK = 0x20,

}seg_flick_type_e;

typedef struct 
{
	uint8_t display_data;	  	// 屏幕只能显示{0 ~188}
	uint8_t flick_type;			// 闪电图标显示 类别
	uint8_t flick_time;			// 以 100ms 为单位

	/* data */
}disp_data_t;

typedef enum{
	ICON_NULL = 0,
	ICON_K1 = 1,
	ICON_K2,

	ICON_B1,
	ICON_C1,

	ICON_A2,
	ICON_B2,
	ICON_C2,
	ICON_D2,
	ICON_E2,
	ICON_F2,
	ICON_G2,

	ICON_A3,
	ICON_B3,
	ICON_C3,
	ICON_D3,
	ICON_E3,
	ICON_F3,
	ICON_G3,
}ICON_CODE_e;

typedef enum{
	// 个位
	GE_WEI_0 = 0,
	GE_WEI_1,
	GE_WEI_2,
	GE_WEI_3,
	GE_WEI_4,
	GE_WEI_5,
	GE_WEI_6,

	GE_WEI_7,
	GE_WEI_8,
	GE_WEI_9,
	// 十位
	SHI_WEI_0,
	SHI_WEI_1,
	SHI_WEI_2,
	SHI_WEI_3,

	SHI_WEI_4,
	SHI_WEI_5,
	SHI_WEI_6,
	SHI_WEI_7,
	SHI_WEI_8,
	SHI_WEI_9,
	// 百位
	BAI_WEI_1,
}DISP_NUMBER_e;


typedef struct 
{
	/* data */
	DISP_NUMBER_e number;
	ICON_CODE_e icon[8];
}DISP_NUM_t;

extern QueueHandle_t  g_display_queue;

// 显示测试
void disp_test(void);
void my_seg_screen_init(void);

#endif
